import Vue from 'vue'

import Cookies from 'js-cookie'

import 'normalize.css/normalize.css' // a modern alternative to CSS resets

import Element from 'element-ui'
import './assets/styles/element-variables.scss'

import '@/assets/styles/index.scss' // global css
import '@/assets/styles/ruoyi.scss' // ruoyi css
import '@/assets/styles/zyzn.scss' // ruoyi css
import App from './App'
import store from './store'
import router from './router'
import permission from './directive/permission'

import './assets/icons' // icon
import './permission' // permission control
import { getDictDataByType } from '@/api/system/dict'
import { getConfigKey } from '@/api/system/config'
import { parseTime, resetForm, addDateRange, selectDictLabel, download, handleTree } from '@/utils/ruoyi'
import Pagination from '@/components/Pagination'
import VueResource from 'vue-resource'
import VueAMap from 'vue-amap'
import axios from 'axios'

Vue.prototype.$axios = axios

Vue.use(VueResource)
Vue.use(VueAMap)
VueAMap.initAMapApiLoader({
  key: '10043252af4319684b9a0eeecdd6e717',
  plugin: ['AMap.Geolocation', 'AMap.Autocomplete', 'AMap.MarkerClusterer', 'AMap.ToolBar', 'AMap.Scale', 'AMap.ControlBar', 'AMap.PlaceSearch','AMap.Geocoder']
})
// 全局方法挂载
Vue.prototype.getDictDataByType = getDictDataByType
Vue.prototype.getConfigKey = getConfigKey
Vue.prototype.parseTime = parseTime
Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.download = download
Vue.prototype.handleTree = handleTree

Vue.prototype.msgSuccess = function(msg) {
  this.$message({ showClose: true, message: msg, type: 'success' })
}

Vue.prototype.msgError = function(msg) {
  this.$message({ showClose: true, message: msg, type: 'error' })
}

Vue.prototype.msgInfo = function(msg) {
  this.$message.info(msg)
}

// 全局组件挂载
Vue.component('Pagination', Pagination)

Vue.use(permission)

// 全局注册组织树
import customDeptTree from '@/views/components/deptTree/index'

Vue.component('customDeptTree', customDeptTree)

/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online! ! !
 */

Vue.use(Element, {
  size: Cookies.get('size') || 'medium' // set element-ui default size
})

Vue.config.productionTip = false
import VCharts from 'v-charts'

// 自定义指令, 用于改变页面title和图标
Vue.directive('title', {//单个修改标题
  inserted: function(el, binding) {
    document.title = store.getters.systemName || '数字化管理平台'
    let logoUrl = store.getters.logoUrl

    if (logoUrl) {
      let $favicon = document.querySelector('link[rel="icon"]')
      if ($favicon != null) {
        $favicon.href = logoUrl
      } else {
        $favicon = document.createElement('link')
        $favicon.rel = 'icon'
        $favicon.href = logoUrl
        document.head.appendChild($favicon)
      }
    }
  }
})

// import Antd from 'ant-design-vue'
// import 'ant-design-vue/dist/antd.css'
//
// Vue.use(Antd)

Vue.use(VCharts)
new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
